package com.dys.testfile01;

import java.io.File;
import java.io.IOException;

/**
 * @className: com.dys.testfile01.FileTest
 * @description: com.dys.testfile01
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/08/13 下午9:49
 */
public class FileTest {

    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) throws IOException {
        // 1.将文件封装为一个File类的对象
        File f1 = new File("E:\\test1.txt");
        File f = new File("E:\\test1.txt");
        File f2 = new File("E:/test2.txt");
        // File.separator属性帮我们获取当前操作系统的路径拼接符号
        // 在windows，dos下，系统默认用“\”作为路径分隔符 ，在unix，url中，使用“/”作为路径分隔符。
        File f3 = new File("E:" + File.separator + "test3.txt");

        // 2.常用方法
        System.out.println("文件是否可读：" + f1.canRead());
        System.out.println("文件是否可写：" + f1.canWrite());
        System.out.println("文件的名字：" + f1.getName());
        System.out.println("文件所在的上级目录：" + f1.getParent());
        System.out.println("是否为目录：" + f1.isDirectory());
        System.out.println("是否为txt文件：" + f1.isFile());
        System.out.println("是否设置了隐藏：" + f1.isHidden());
        System.out.println("txt文件的大小: " + f1.length());
        System.out.println("文件是否存在：" + f1.exists());

        // 增加逻辑
        // if (f1.exists()) {
        //     f1.delete();
        // }else {
        //     try {
        //         f1.createNewFile();
        //     } catch (IOException e) {
        //         throw new RuntimeException(e);
        //     }
        // }
        // 比较两个对象
        System.out.println(f == f1);
        System.out.println(f.equals(f1));

        // 3.路径相关方法
        System.out.println("绝对路径文件：" + f1.getAbsoluteFile());
        System.out.println("绝对路径：" + f1.getAbsolutePath());
        System.out.println("相对路径：" + f1.getPath());
        System.out.println("toString: " + f1.toString());

        System.out.println("==============================");
        File f4 = new File("demo.txt");
        if (!f3.exists()) {
            f4.createNewFile();
        }
        // 绝对路径：真实的，精准的，完整的路径
        System.out.println("f4所在的绝对路径：" + f4.getAbsolutePath());
        // 相对路径：有一个参照物，相对这个参照物的路径
        // 在main方法中，相对位置指的就是：D:\IDEA_workspace\TestJavaSE
        // 在junit的测试方法中，相对路径指的就是模块位置
        System.out.println("f4文件的相对路径：" + f4.getPath());
        // toString的效果永远是  相对路径
        System.out.println("f4的toString: " + f4.toString());

        // java.io.EOFException
        File f5 = new File("a/b/c/demo1.txt");
        // if (!f5.exists()) {
        //     f5.mkdirs();
        //     // 会报错，只能在一层目录下创建文件，不能跳级创建，需要先获取文件的父级，再进行创建
        //     f5.createNewFile();
        // }
        File parent = new File(f5.getParent());
        if (!parent.exists()) {
            parent.mkdirs();
        }
        if (!f5.exists()) {
            f5.createNewFile();
        }
        System.out.println("f5所在的绝对路径：" + f5.getAbsolutePath());
        System.out.println("f5文件的相对路径：" + f5.getPath());
        System.out.println("f5的toString: " + f5.toString());
    }
}
